A graphics processing unit (GPU) is a dedicated graphics rendering device used to generate computerized graphics for display on a display device. GPUs are built with a highly-parallel structure that provides more efficient processing than typical, general purpose central processing units (CPUs) for a range of complex algorithms. For example, the complex algorithms may correspond to representations of three-dimensional computerized graphics. In such a case, a GPU can implement a number of primitive graphics operations to create three-dimensional images for display on a display device more quickly than using a CPU to draw the image for display on the display device.
A typical GPU receives an image geometry and uses a pipeline approach to generate graphics which can be output, for example, for display on a display device. A typical graphics pipeline includes a number of stages which operate in parallel, with the output from one stage being used at another stage in the pipeline. Each stage in the pipeline is performed by one or more components. Workloads for each component can vary based on the data to be operated on by the component and the number of operations to be performed on the data, for example. In addition, workloads can vary from one image geometry to the next, and at different times during the processing of one image geometry.
FIG. 1 illustrates components of a conventional GPU system using a pipeline for processing an image geometry. The graphics pipeline 102 of GPU system 100 consists of an input assembler 104, vertex shader 106, rasterizer 108, fragment shader 110 and output merger 112, each of which has access to resources 114. Resources 114 are the data resources used by the graphics pipeline 102, such as the coordinates and attributes associated with each vertex identified in the image geometry. Vertex coordinates identify the vertices within the image geometry based on, for example, a four-dimensional coordinate system with X, Y, and Z (width, height, and depth) coordinates that identify a location of a vertex within the image geometry, and a W coordinate that comprises a perspective parameter for the image geometry. Vertex attributes, for example, may include color, normal, and texture coordinates associated with a vertex. Resources 114 can also include other data, such as textures, used by graphics pipeline 102.
The input assembler 104 assembles vertices of primitives that are to be processed via the graphics pipeline 102. Vertex shader 106 is applied to the image geometry for an image and generates vertex coordinates and attributes of vertices within the image geometry. Rasterization 108 converts primitives into pixels based on the XY coordinates of vertices within the primitives and the number of pixels included in the primitives. Fragment shader 110 renders the pixels, which are output to the output merger 112 for post-processing and presentation of the processed image using an output device.
One component of graphics pipeline 102 (e.g., rasterizer 108) can be idle (e.g., having completed processing on a given batch of data or waiting for some reason to process remaining data). While the one component is idle, it is still receiving the same level of power as another component that is actually operating at full capacity to process the data. While power consumption can be of concern regardless of the source of power, it is of particular concern in a case that the source has a limited power capacity, such as in the case of a battery that has a limited charge.